package com.bm.server.util;

import java.lang.reflect.Field;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author: 邢朋辉
 * @Date: 2022/5/5 16:35
 */
public class BeanUtil {
    /**
     * 实现对象的属性复制 要求对象的属性名称和类型一样*/
    public static <T> T copy(Object obj, Field[] arr, Class<T> clz){
        T t= null;
        try {
            //1.反射 创建类的对象
            t = clz.newInstance();
            //2.循环遍历 属性
            for (Field f:arr){
                f.setAccessible(true);
                //3.获取结果对象中的属性对象
                Field field=clz.getDeclaredField(f.getName());
                if(field!=null) {
                    field.setAccessible(true);//忽略访问修饰符
                    field.set(t, f.get(obj));//设置属性的内容
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }
}
